package d13_interface;

import d5_abstract.A;

public class Test {
    public static void main(String[] args) {
        //接口其他注意事项（了解）


        //3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。
        //4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。

    }
}

//4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。
interface A3 {
    default void run(){
        System.out.println("A3");
    }
}

interface B3 {
    default void run(){
        System.out.println("B3");
    }
}
class C3 implements A3, B3{

    @Override
    public void run() {//都不用,自己写一个,就不会报错
        A3.super.run();
    }
}
//3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。
/*class Animal{
    public void run(){
        System.out.println("Animal超");
    }
}
interface Go{
    default void run(){
        System.out.println("interface跑的超快");
    }
}
class cat extends Animal implements Go{
    public void test(){
        run();//亲爹的
        Go.super.run();//干爹的
    }
}*/
//2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现。
//解释:就是方法名相同,返回值不相同,那到底该重写那个方法,懵逼(报错)
/*interface A2{
    String run();
}
interface B2{
    void run();
}
class C1 implements A2, B2{

}*/

//1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承。
//如果相同,就只继承一个方法,不知道的到哪个
/*interface A1{
    String run();
}
interface B1{
    void run();
}
interface C1 extends A1,B1{}*/
